package org.contact.dao.impl;

import java.util.List;
import java.util.Map;

import org.contact.dao.CuentaDAO;
import org.contact.model.dto.CuentaDTO;
import org.hibernate.SessionFactory;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

public class CuentaDAOImpl extends HibernateDaoSupport implements
		CuentaDAO {
	
	public CuentaDAOImpl(SessionFactory sessionFactory) {
		this.setSessionFactory(sessionFactory);
	}
	

	@Override
	public void delete(CuentaDTO t) {
		// TODO Auto-generated method stub
		getHibernateTemplate().delete(t);
	}

	@Override
	public CuentaDTO getById(CuentaDTO t) {
		// TODO Auto-generated method stub
		return (CuentaDTO)getHibernateTemplate().get(CuentaDTO.class, t.getId_cuenta());
	}

	@Override
	public Long insert(CuentaDTO t) {
		// TODO Auto-generated method stub
		return (Long)getHibernateTemplate().save(t);
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<CuentaDTO> loadAll(Map<String, String> filter) {
		// TODO Auto-generated method stub
		List<CuentaDTO> list = null;
		if(filter == null){
			list = getHibernateTemplate().loadAll(CuentaDTO.class);
			return list;
		}else {
			System.out.println("entro a select");
			String sql = "SELECT e.nombre as nom_empresa,c.nro_cuenta,tip_mone,tip_cuenta,b.nombre as nom_banco " +
                          "FROM tb_empresa e inner join tb_cuenta c " +
                          "on e.id_empresa=c.id_empresa inner join tb_banco b " +
                          "on c.id_banco=b.id_banco WHERE lower(c." + filter.get("col") + ") ";
			sql = sql + "LIKE '%" + filter.get("val").toLowerCase() + "%';";
			
//			String sql = "SELECT * FROM tb_cuenta WHERE lower(" + filter.get("col") + ") ";
//			sql = sql + "LIKE '%" + filter.get("val").toLowerCase() + "%';";
			
			System.out.println(sql);
			list = getSession().createSQLQuery(sql)
				.addEntity(CuentaDTO.class)
				.list();
			return list;
		}
	}

	@Override
	public void update(CuentaDTO t) {
		// TODO Auto-generated method stub
		getHibernateTemplate().update(t);
	}

}
